package org.shx.springboot.ollama.ai.service;

import jakarta.servlet.http.HttpSession;
import org.springframework.ai.chat.model.ChatResponse;
import reactor.core.publisher.Flux;

public interface ChatService {
    /**
     * 根据消息直接输出回答
     */
    String chat(String message);

    /**
     * 根据消息直接输出回答 流式输出
     */
    Flux<ChatResponse> streamChat(String message);

    /**
     * 自定义响应流式输出
     * @param message
     * @return
     */
    Flux<String> generateStreamChat(String message);
    /**
     * 自定义响应流式输出 带会话
     * @param message
     * @return
     */
    Flux<String> generateStreamChatSession(String message, HttpSession session);
    /**
     * 使用elk 知识库
     * @param question
     * @return
     */
    public Flux<String> elkStreamChat(String question);


    /**
     * 使用elk 知识库
     * 使用自定义  ollamaChatClient  自带了会话记录功能
     *
     * @Qualifier("ollamaChatClient")
     * private ChatClient ollamaChatClient;
     *
     *   需要ChatClientConfig配置
     * @param question
     * @return
     */
    public String elkChatByMyClient(String question, HttpSession session);
    public Flux<String> elkStreamChatByMyClient(String question, HttpSession session);

    /**
     * ChatClient 使用另一种方式调用 不直接使用chatModel
     * @param question
     * @return
     */
    public Flux<String> simpleClient(String question);

    public Flux<String> mcpClient(String question);
}
